package com.neuedu.javase.tools;

/***
 * 项目名称:  MyJavaSE 
 * 包：  com.neuedu.javase.tools 
 * date:   2025/10/29   13:33  
 * 描述:  
 *  @author : 张金山
 *  作者博客:   https://blog.fulfill.com.cn
 */
public class Person {

    private String name;


    public Person(String name) {
        this.name = name;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }


    /**
     * 子类重写 Object的方法  equals  用于判断两个对象 属性 是否 相等的，
     * Object :
     * public boolean equals(Object obj) {
     *         return (this == obj);
     *     }
     * @param obj
     * @return
     */
    @Override
    public boolean equals(Object obj) {
        if(  this.getClass()  !=   obj.getClass() ){
            return false;
        }

        Person otherPerson = (Person) obj;
        //判断name 属性是否相等
        return name .equals( otherPerson.getName() );

    }

    public static void main(String[] args) {
        //创建第一个对象
        Person p1 = new Person("张三");
        // 创建第二个对象
        Person p2 = new Person("张三");

        System.out.println("(p1 == p2) = " + (p1 == p2));   //false
        System.out.println("(p1.equals( p2)) = " + (p1.equals(p2)));



        // String 的equals   和   ==

        // String  str1 = "helloJava";
        String  str1 = new String("helloJava");
        String  str2 = new String("helloJava");

        // 使用字面量创建对象
        String str3  = "helloJava";
        String str4  = "helloJava";
        String str5  = "hello"+"Java";  //Javac编译的时候进行优化  针对 字面量的加法运算  在class中   String str5  = "helloJava";


        System.out.println("(str1 == str2) = " + (str1 == str2));  //false

        //判断 String 类型 是否相等， 使用equals （判断对象的属性值是否相等）
        // String类重写的 equals 方法
        System.out.println("str1.equals(str2) = " + str1.equals(str2)); //true


        System.out.println("str3.equals(str4) = " + str3.equals(str4)); //true

        System.out.println("(str3 == str4) = " + (str3 == str4)); //true
        System.out.println("(str4 == str5) = " + (str4 == str5)); // true


        //关于equals的注意事项

        String info = "java";


        // 中间经过运算后 info 变为null
        info = null;



        //比较两个对象的equals   使用 常量.equals(变量)
        // System.out.println(info.equals("java"));   // X 会报错
        System.out.println("java".equals(info));   //不会报错，  输出false


    }
    
    
    
    
}
